package com.example.nio02;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * @Date 2022/10/7
 * @Author Jonathan
 */
public class NIODemo01 {
    public static void main(String[] args) throws IOException {
        // 创建channel
        final FileChannel channel = new FileInputStream("D:\\code\\example\\netty-learn\\data.txt").getChannel();
        // 创建缓冲区
        final ByteBuffer buffer = ByteBuffer.allocate(10); // 写 大了  占内存 写小了 非CPU
        while (true) {
            // 通道获取的文件数据 写入缓冲区
            final int read = channel.read(buffer);
            if (read == -1) {
                break;
            }
            // 程序读取buffer内容 后续的操作  设置buffer为读模式
            buffer.flip();
            while (buffer.hasRemaining()) {
                final byte b = buffer.get();
                System.out.print((char) b);
            }

            // 设置为写模式  这个不设置也可以   是一个好的编程习惯
            buffer.clear();
        }
        System.out.println();
    }
}
